--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/NotificationBell.test.js 1e0b869c2eaad4d1e4b39b21f25e0b42cf03734a (1e0b869c) Text, 36.56 KB
Tff7b72import Tb4b4b4{ Te6edf3mount Tb4b4b4} Tff7b72from Ta5d6ff"@vue/test-utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3afterEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3NotificationBell Tff7b72from Ta5d6ff"../../meshchatx/src/frontend/components/NotificationBell.vue"Tb4b4b4;
Tff7b72let Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72let Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/WebSocketConnection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3onTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3handlerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72= Te6edf3wsHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3wsHandlersTb4b4b4[Te6edf3eventTb4b4b4]Tb4b4b4.Te6edf3pushTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3offTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3handlerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3wsHandlersTb4b4b4[Te6edf3eventTb4b4b4]Tb4b4b4) Tb4b4b4{
Te6edf3wsHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72= Te6edf3wsHandlersTb4b4b4[Te6edf3eventTb4b4b4]Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3h Tff7b72!== Te6edf3handlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/GlobalEmitter"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3onTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3handlerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72= Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4]Tb4b4b4.Te6edf3pushTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3offTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3handlerTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4]Tb4b4b4) Tb4b4b4{
Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72= Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4]Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3h Tff7b72!== Te6edf3handlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3emitTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4(Te6edf3eventTb4b4b4, Te6edf3payloadTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tb4b4b4(Te6edf3emitterHandlersTb4b4b4[Te6edf3eventTb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3mockTb4b4b4(Ta5d6ff"../../meshchatx/src/frontend/js/Utils"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{
Tff7b72defaultTff7b72: Tb4b4b4{ Te6edf3formatTimeAgoTff7b72: Tb4b4b4(Te6edf3dTb4b4b4) Tb4b4b4=> Ta5d6ff"1h ago" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3MaterialDesignIcon Tff7b72= Tb4b4b4{ Te6edf3templateTff7b72: Ta5d6ff'<div class="mdi"></div>'Tb4b4b4, Te6edf3propsTff7b72: Tb4b4b4[Ta5d6ff"iconName"Tb4b4b4] Tb4b4b4}Tb4b4b4;
Tff7b72function Te6edf3mountBellTb4b4b4(Te6edf3options Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3mountTb4b4b4(Te6edf3NotificationBellTb4b4b4, Tb4b4b4{
Tffa657globalTff7b72: Tb4b4b4{
Te6edf3componentsTff7b72: Tb4b4b4{ Te6edf3MaterialDesignIcon Tb4b4b4}Tb4b4b4,
Te6edf3directivesTff7b72: Tb4b4b4{ Ta5d6ff"click-outside"Tff7b72: Tb4b4b4{ Te6edf3mountedTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4, Te6edf3unmountedTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3mocksTff7b72: Tb4b4b4{
Te6edf3$routerTff7b72: Tb4b4b4{ Te6edf3pushTff7b72: Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4,
Te6edf3$tTff7b72: Tb4b4b4(Te6edf3keyTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3map Tff7b72= Tb4b4b4{
Ta5d6ff"app.notifications_no_new"Tff7b72: Ta5d6ff"No new notifications"Tb4b4b4,
Ta5d6ff"app.notifications_empty_history"Tff7b72: Ta5d6ff"No notification history"Tb4b4b4,
Ta5d6ff"app.notifications_history_title"Tff7b72: Ta5d6ff"Recent notification history"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72return Te6edf3mapTb4b4b4[Te6edf3keyTb4b4b4] Tff7b72|| Te6edf3keyTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4...Te6edf3optionsTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72function Te6edf3simulateWsMessageTb4b4b4(Te6edf3typeTb4b4b4, Te6edf3extra Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{ Te6edf3typeTb4b4b4, Tb4b4b4...Te6edf3extra Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"lxmf.delivery" Tff7b72&& Te6edf3payloadTb4b4b4.Te6edf3lxmf_message Tff7b72=== Tff7b72undefinedTb4b4b4) Tb4b4b4{
T8b949e// Default to a user-facing inbound text message so the bell will
T8b949e// reload. Tests that want to exercise the false-trigger path pass an
T8b949e// explicit lxmf_message override (reaction, telemetry, empty, etc.).
Te6edf3payloadTb4b4b4.Te6edf3lxmf_message Tff7b72= Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"hello"Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3data Tff7b72= Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3payloadTb4b4b4)Tb4b4b4;
Tb4b4b4(Te6edf3wsHandlersTb4b4b4[Ta5d6ff"message"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Tb4b4b4{ Te6edf3data Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell UI"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"renders bell button"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3btn Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button.relative.rounded-full"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3btnTb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"shows unread badge when unreadCount > 0"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= T79c0ff5Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"5"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"shows 9+ when unreadCount > 9"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= T79c0ff12Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"9+"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"opens dropdown on button click"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isDropdownOpenTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Notifications"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"shows Clear button when dropdown open and notifications exist"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"h1"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A"Tb4b4b4, Te6edf3updated_atTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"Hi" Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Clear"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"shows No new notifications when empty"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff150Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"No new notifications"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"opening empty dropdown adds one notifications fetch after mount"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3notifGetsAfterMount Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff150Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3notifGetsAfterOpen Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3notifGetsAfterOpen Tff7b72- Te6edf3notifGetsAfterMountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"dropdown has Notifications heading when open"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3h3 Tff7b72= Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff"h3"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3h3Tff7b72?Tb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"Notifications"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell websocket reliability"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"reloads on lxmf.delivery websocket event"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"d1"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"X"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"msg" Tb4b4b4}Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"reloads on telephone_missed_call websocket event"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[
Tb4b4b4{
Te6edf3idTff7b72: T79c0ff1Tb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"telephone_missed_call"Tb4b4b4,
Te6edf3destination_hashTff7b72: Ta5d6ff"c1"Tb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Caller"Tb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff"Missed"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"telephone_missed_call"Tb4b4b4, Tb4b4b4{ Te6edf3remote_identity_hashTff7b72: Ta5d6ff"c1" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"reloads on new_voicemail websocket event"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[
Tb4b4b4{
Te6edf3idTff7b72: T79c0ff2Tb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"telephone_voicemail"Tb4b4b4,
Te6edf3destination_hashTff7b72: Ta5d6ff"v1"Tb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"VM"Tb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff"Voicemail"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"new_voicemail"Tb4b4b4, Tb4b4b4{ Te6edf3remote_identity_hashTff7b72: Ta5d6ff"v1" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on unrelated websocket events"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3callsBefore Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"telephone_ringing"Tb4b4b4)Tb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"telephone_call_ended"Tb4b4b4)Tb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf_message_state_updated"Tb4b4b4)Tb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{ Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72false Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3callsBeforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on outbound lxmf.delivery (delivery confirmation path)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3callsBefore Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72falseTb4b4b4, Te6edf3stateTff7b72: Ta5d6ff"delivered" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3callsBeforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"reloads on inbound lxmf.delivery"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3callsAfterMount Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"hi"Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3callsAfterMountTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3notifCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3notifCallsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"rapid sequential websocket events all trigger reloads"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3initialCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff5Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff100Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3initialCallsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"ignores malformed websocket payload without crashing"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3initialCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4(Te6edf3wsHandlersTb4b4b4[Ta5d6ff"message"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Ta5d6ff"not-json{" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3initialCallsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell false-trigger suppression"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72function Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3callsBeforeTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3notifGets Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3notifGetsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3callsBeforeTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on inbound reaction (is_reaction flag)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3is_reactionTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3reactionTff7b72: Tb4b4b4{ Te6edf3reaction_toTff7b72: Ta5d6ff"abc"Tb4b4b4, Te6edf3reaction_contentTff7b72: Ta5d6ff"fire" Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on inbound reaction signaled only via fields.reaction"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3reactionTff7b72: Tb4b4b4{ Te6edf3reaction_toTff7b72: Ta5d6ff"abc"Tb4b4b4, Te6edf3reaction_contentTff7b72: Ta5d6ff"\u{1F44D}" Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on inbound telemetry-only message"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3titleTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3telemetryTff7b72: Tb4b4b4{ Te6edf3somethingTff7b72: T79c0ff1 Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on inbound icon-only / empty payload message"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload when content is whitespace only"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff" \n\t "Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on lxmf.delivery without lxmf_message field"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4(Te6edf3wsHandlersTb4b4b4[Ta5d6ff"message"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"lxmf.delivery" Tb4b4b4}Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does NOT reload on lxmf_message_state_updated (delivery status)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf_message_state_updated"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72falseTb4b4b4, Te6edf3stateTff7b72: Ta5d6ff"delivered" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectNoNotificationsReloadTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"DOES reload on real inbound text message"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"hello"Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3after Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3afterTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"DOES reload on inbound title-only message"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff"Subject"Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3after Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3afterTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"DOES reload on inbound image attachment"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3imageTff7b72: Tb4b4b4{ Te6edf3image_sizeTff7b72: T79c0ff1024Tb4b4b4, Te6edf3image_typeTff7b72: Ta5d6ff"png" Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3after Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3afterTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"DOES reload on inbound audio attachment"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3audioTff7b72: Tb4b4b4{ Te6edf3audio_sizeTff7b72: T79c0ff4242Tb4b4b4, Te6edf3audio_modeTff7b72: T79c0ff1 Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3after Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3afterTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"DOES reload on inbound file attachment"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3before Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3file_attachmentsTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3file_nameTff7b72: Ta5d6ff"x.txt"Tb4b4b4, Te6edf3file_sizeTff7b72: T79c0ff5 Tb4b4b4}Tb4b4b4] Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff30Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3after Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3afterTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(Te6edf3beforeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"isUserFacingLxmfDelivery method directly classifies common payloads"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fn Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isUserFacingLxmfDeliveryTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72falseTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"hello" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"hello" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff"" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3titleTff7b72: Ta5d6ff"Subject" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3is_reactionTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"still ignored" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(
Te6edf3fnTb4b4b4(Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3reactionTff7b72: Tb4b4b4{ Te6edf3reaction_toTff7b72: Ta5d6ff"x"Tb4b4b4, Te6edf3reaction_contentTff7b72: Ta5d6ff"\u{1F44D}" Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3telemetryTff7b72: Tb4b4b4{ Te6edf3xTff7b72: T79c0ff1 Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3imageTff7b72: Tb4b4b4{ Te6edf3image_sizeTff7b72: T79c0ff1 Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3audioTff7b72: Tb4b4b4{ Te6edf3audio_sizeTff7b72: T79c0ff1 Tb4b4b4} Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(
Te6edf3fnTb4b4b4(Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3file_attachmentsTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3file_nameTff7b72: Ta5d6ff"a"Tb4b4b4, Te6edf3file_sizeTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4] Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fnTb4b4b4(Tb4b4b4{ Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4, Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3file_attachmentsTff7b72: Tb4b4b4[Tb4b4b4] Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"badge stays at zero through a flood of reaction events"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff25Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3simulateWsMessageTb4b4b4(Ta5d6ff"lxmf.delivery"Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3is_incomingTff7b72: Tff7b72trueTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{ Te6edf3reactionTff7b72: Tb4b4b4{ Te6edf3reaction_toTff7b72: Ta5d6ff`Ta5d6ffmTffd700${Te6edf3iTffd700}Ta5d6ff`Tb4b4b4, Te6edf3reaction_contentTff7b72: Ta5d6ff"\u{1F44D}" Tb4b4b4} Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff80Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell badge accuracy"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"badge hidden when unread count is 0"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3badge Tff7b72= Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"span.bg-red-500"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3badgeTb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"badge shows exact count for 1-9"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3n Tff7b72= T79c0ff1Tb4b4b4; Te6edf3n Tff7b72<= T79c0ff9Tb4b4b4; Te6edf3nTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= Te6edf3nTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Tffa657StringTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"badge shows 9+ for counts above 9"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3n Tff7b72of Tb4b4b4[T79c0ff10Tb4b4b4, T79c0ff50Tb4b4b4, T79c0ff100Tb4b4b4, T79c0ff999Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= Te6edf3nTb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"9+"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Tffa657StringTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"badge updates reactively when unreadCount changes"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= T79c0ff3Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"3"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"span.bg-red-500"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= T79c0ff15Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"9+"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"opening dropdown syncs unread count from server after mark-as-viewed"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3vi
Tb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"d1"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"m" Tb4b4b4}Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff3Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3mockResolvedValueOnceTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"d1"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"m" Tb4b4b4}Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff3Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff80Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"API failure does not cause false badge"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockRejectedValueTb4b4b4(Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"Network error"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3notificationsTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"API returning null/empty fields does not cause false badge"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tff7b72nullTb4b4b4, Te6edf3unread_countTff7b72: Tff7b72null Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell mark-as-viewed"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"calls mark-as-viewed API when dropdown is opened"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4, Te6edf3destination_hashTff7b72: Ta5d6ff"abc"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"x" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"telephone_missed_call"Tb4b4b4, Te6edf3idTff7b72: T79c0ff42Tb4b4b4, Te6edf3destination_hashTff7b72: Ta5d6ff"mc"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"B"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"y" Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff2Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff100Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3postCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4;
Tff7b72const Te6edf3markCall Tff7b72= Te6edf3postCallsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications/mark-as-viewed"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3markCallTb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3markCallTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3destination_hashesTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"abc"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3markCallTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3notification_idsTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(T79c0ff42Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"skips mark-as-viewed when no notifications"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications/mark-as-viewed"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3markCallsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell history"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"shows history control when dropdown is open"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button.relative.rounded-full"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3historyBtn Tff7b72= Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff'[aria-label="Recent notification history"]'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3historyBtnTb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"requests unread=false when toggling history on"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[
Tb4b4b4{
Te6edf3idTff7b72: T79c0ff9Tb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"telephone_missed_call"Tb4b4b4,
Te6edf3destination_hashTff7b72: Ta5d6ff"ab"Tb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"X"Tb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff"missed"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button.relative.rounded-full"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff120Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockClearTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3toggleHistoryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3notifCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3notifCallsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lastParams Tff7b72= Te6edf3notifCallsTb4b4b4[Te6edf3notifCallsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3paramsTb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3lastParamsTb4b4b4.Te6edf3unreadTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showHistoryTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"resets history mode when dropdown closes"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showHistory Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3closeDropdownTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3showHistoryTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"shows empty history copy in history mode"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button.relative.rounded-full"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff120Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3toggleHistoryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"No notification history"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell clear all"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"clears all notifications and marks conversations as read"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3callCount Tff7b72= T79c0ff0Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/notifications"Tb4b4b4) Tb4b4b4{
Te6edf3callCountTff7b72++Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3callCount Tff7b72<= T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"x"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"X"Tb4b4b4, Te6edf3contentTff7b72: Ta5d6ff"m" Tb4b4b4}Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3url Tff7b72=== Ta5d6ff"/api/v1/lxmf/conversations"Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3conversationsTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"conv1"Tb4b4b4, Te6edf3is_unreadTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3destination_hashTff7b72: Ta5d6ff"conv2"Tb4b4b4, Te6edf3is_unreadTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff100Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3clearAllNotificationsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff100Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3readCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"/mark-as-read"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3readCallsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3readCallsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"conv1"Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"NotificationBell live sync"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3clearAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3post Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3wsHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3emitterHandlers Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"refreshes badge when conversations are marked read elsewhere"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3callCount Tff7b72= T79c0ff0Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3callCountTff7b72++Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3callCount Tff7b72=== T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff3 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff3Tb4b4b4)Tb4b4b4;
Tb4b4b4(Te6edf3emitterHandlersTb4b4b4[Ta5d6ff"notifications-changed"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanOrEqualTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"subscribes to notifications-changed on mount and unsubscribes on destroy"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3emitterHandlersTb4b4b4[Ta5d6ff"notifications-changed"Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3handler Tff7b72= Te6edf3emitterHandlersTb4b4b4[Ta5d6ff"notifications-changed"Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3emitterHandlersTb4b4b4[Ta5d6ff"notifications-changed"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"polls unread count every 5s while dropdown is closed"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useFakeTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3unread Tff7b72= T79c0ff4Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=>
Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: Te6edf3unread Tb4b4b4} Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3viTb4b4b4.Te6edf3runOnlyPendingTimersAsyncTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff4Tb4b4b4)Tb4b4b4;
Te6edf3unread Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72await Te6edf3viTb4b4b4.Te6edf3advanceTimersByTimeAsyncTb4b4b4(T79c0ff5000Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3viTb4b4b4.Te6edf3runOnlyPendingTimersAsyncTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3isDropdownOpenTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanOrEqualTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3useRealTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"keeps badge visible until server confirms read (no optimistic clear)"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{
Te6edf3notificationsTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4, Te6edf3destination_hashTff7b72: Ta5d6ff"d1"Tb4b4b4, Te6edf3display_nameTff7b72: Ta5d6ff"A"Tb4b4b4, Te6edf3latest_message_previewTff7b72: Ta5d6ff"hi" Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3unread_countTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"span.bg-red-500"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4(Te6edf3emitterHandlersTb4b4b4[Ta5d6ff"notifications-changed"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"span.bg-red-500"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{ Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4(Te6edf3emitterHandlersTb4b4b4[Ta5d6ff"notifications-changed"Tb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"span.bg-red-500"Tb4b4b4)Tb4b4b4.Te6edf3existsTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"opening bell with already-read server state shows empty list and clears stale badge"Tb4b4b4, Tff7b72async Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3get Tff7b72= Te6edf3viTb4b4b4.Te6edf3fnTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3mockResolvedValueTb4b4b4(Tb4b4b4{
Te6edf3dataTff7b72: Tb4b4b4{ Te6edf3notificationsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3unread_countTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wrapper Tff7b72= Te6edf3mountBellTb4b4b4(Tb4b4b4{ Te6edf3attachToTff7b72: Tffa657documentTb4b4b4.Te6edf3body Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCount Tff7b72= T79c0ff5Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"span.bg-red-500"Tb4b4b4)Tb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"5"Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3wrapperTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"button"Tb4b4b4)Tb4b4b4.Te6edf3triggerTb4b4b4(Ta5d6ff"click"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff80Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3unreadCountTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3wrapperTb4b4b4.Te6edf3vmTb4b4b4.Te6edf3notificationsTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3textContentTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"No new notifications"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markCalls Tff7b72= Tffa657globalTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4.Te6edf3mockTb4b4b4.Te6edf3callsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"/api/v1/notifications/mark-as-viewed"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3markCallsTb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3wrapperTb4b4b4.Te6edf3unmountTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────